Amazon Inspectorで単一リソースのスキャン結果の作成日時にずれがあるかを確認してみた

Amazon Inspectorで単一リソースのスキャン結果の作成日時にずれがあるかを確認してみた

Clock Icon2024.11.22

はじめに

1つのリソースに対してAmazon Inspectorで1回のスキャンを実行すると、複数の検出結果が作成される場合があります。

それぞれの検出結果の作成日時にどの程度のずれがあるのかを簡単に確認しました。

調査に至った経緯

前回の記事で、Amazon Inspectorの検出結果を1リソースごとにまとめてメール通知する方法を紹介しました。

https://dev.classmethod.jp/articles/amazon-inspector-findings-aggregated-email-notification/

構成は以下のとおりです。

cm-hirai-screenshot 2024-11-15 13.11.02

以下の流れで処理を行います。

  1. Inspectorで検出結果が作成され、Security Hub経由でEventBridgeが起動します。
  2. Firehose ストリームに検出結果が一時保存されます。
  3. Firehose ストリームは、指定したバッファ期間内に受信したイベントを集約し、1 つのファイルとして S3 バケットに保存します。
    • 複数のリソースの複数の検出結果が集約されます。
  4. S3 バケットにファイルが保存されたことをトリガーにLambdaが起動します。
  5. Lambdaでは、S3に保存されたファイルを取得し、1リソースごとに検出結果を集約し、1リソースごとに1通のメールを送信します。

Firehose ストリームは、指定したバッファ期間内に受信したイベントを集約し、1 つのファイルとして S3 バケットに保存します。

バッファ期間を適切に設定するため、1つのリソースに対してInspectorで1回のスキャンを実行した際に作成される複数の検出結果の作成日時にどの程度のずれがあるかを調査します。
もし、数分ずれがあれば、バッファ期間もそれに見合った値にする必要があります。

結論

1つのリソースに対して、Inspectorで1回のスキャンを実行した際に生成される検出結果の作成日時のずれに関する公開情報は、確認できませんでした。

参考情報として、検証環境でInspectorと統合済みのAWS Security Hubの検出結果におけるCreatedAtをもとに確認した結果は以下の通りです。
複数のメンバーアカウントで確認したかったため、Security Hub経由で確認しました。

  • ECRのコンテナイメージ:作成日時のずれは確認できませんでした
  • Lambda関数:1秒未満のずれのみ確認されました(私の検証環境では、0.06秒のずれを確認)。

以下のコマンドを使用することで、Inspectorの検出結果におけるCreatedAtの日時のずれを確認できます。

filtersパラメータと<リソースID>の値は任意で変更してください。

$ aws securityhub get-findings \
--filters '{
    "ProductName": [
        {
            "Value": "Inspector",
            "Comparison": "EQUALS"
        }
    ],
    "RecordState": [
        {
            "Value": "ACTIVE",
            "Comparison": "EQUALS"
        }
    ],
    "ResourceId": [
        {
            "Value": "<リソース ID>",
            "Comparison": "EQUALS"
        }
    ]
}' \
--query 'Findings[*].[CreatedAt]' \
--output text | sort | uniq

このコマンドは、特定のリソースに対するInspectorの有効な検出結果の作成日時を、重複を除いて時系列順に表示します。

出力結果
2024-11-15T06:44:54.149Z
  • --filters '...'
    • 取得する調査結果にフィルターをかけます。フィルター条件は JSON 形式で指定されています:
      • "ProductName": "Inspector" - Inspector からの調査結果のみを対象とします。
      • "RecordState": "ACTIVE" - アクティブな(解決されていない)調査結果のみを対象とします。
      • "ResourceId": "<リソース ID>" - 特定のリソースIDに関連する調査結果のみを対象とします。
  • --query 'Findings[*].[CreatedAt]'
    • 取得した調査結果から、作成日時(CreatedAt)のみを抽出します。
  • | sort | uniq
    • パイプ(|)を使用して、出力結果をソートし、重複を削除します。

https://docs.aws.amazon.com/cli/latest/reference/securityhub/get-findings.html

ECRコンテナイメージやLambda関数のリソースIDは、Security Hubのマネジメントコンソール上で確認できます。

  • ECRコンテナイメージ例:arn:aws:ecr:ap-northeast-1:123456789012:repository/nginx-test/sha256:xxxxxxxxxxxxx
  • Lambda関数例arn:aws:lambda:ap-northeast-1:123456789012:function:test-lambda-function:$LATEST
    cm-hirai-screenshot 2024-11-15 15.48.09

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.